import {Injectable} from '@angular/core';
import {colorHelper} from './theme.constants';
import * as _ from 'lodash';

@Injectable()
export class BaThemeConfigProvider {

    basic = {
        default: '#ffffff',
        defaultText: '#ffffff',
        border: '#dddddd',
        borderDark: '#aaaaaa',
    };

    // main functional color scheme
    colorScheme = {
        primary: '#00abff',
        info: '#40daf1',
        success: '#8bd22f',
        warning: '#e7ba08',
        danger: '#f95372',
    };

    // dashboard colors for charts
    dashboardColors = {
        red:'#FF0000',
        green: '#00FF00',
        yellow: '#0000FF',
        lightPink: '#FFB6C1',
        grey: '#808080',
        orange: '#FFA500',
        salmon: '#FA8072',
        maroon: '#800000',
        lightgrey: '#D3D3D3',
        lemon: '#FFF44F',
        gossip: '#DDF5AD',
        silverTree: '60BF90',
        surfieGreen: '#0F6F75',
        blueStone: '#105A5A'
    };

    conf = {
        theme: {
            name: 'ng2',
        },
        colors: {
            default: this.basic.default,
            defaultText: this.basic.defaultText,
            border: this.basic.border,
            borderDark: this.basic.borderDark,

            primary: this.colorScheme.primary,
            info: this.colorScheme.info,
            success: this.colorScheme.success,
            warning: this.colorScheme.warning,
            danger: this.colorScheme.danger,

            primaryLight: colorHelper.tint(this.colorScheme.primary, 30),
            infoLight: colorHelper.tint(this.colorScheme.info, 30),
            successLight: colorHelper.tint(this.colorScheme.success, 30),
            warningLight: colorHelper.tint(this.colorScheme.warning, 30),
            dangerLight: colorHelper.tint(this.colorScheme.danger, 30),

            primaryDark: colorHelper.shade(this.colorScheme.primary, 15),
            infoDark: colorHelper.shade(this.colorScheme.info, 15),
            successDark: colorHelper.shade(this.colorScheme.success, 15),
            warningDark: colorHelper.shade(this.colorScheme.warning, 15),
            dangerDark: colorHelper.shade(this.colorScheme.danger, 15),

            dashboard: {
                blueStone: this.dashboardColors.blueStone,
                surfieGreen: this.dashboardColors.surfieGreen,
                silverTree: this.dashboardColors.silverTree,
                gossip: this.dashboardColors.gossip,
                green: this.dashboardColors.green,
                red: this.dashboardColors.red,
                lightPink: this.dashboardColors.lightPink,
                grey: this.dashboardColors.grey,
                yellow: this.dashboardColors.yellow,
                orange: this.dashboardColors.orange,
                salmon: this.dashboardColors.salmon,
                maroon: this.dashboardColors.maroon,
                lightgrey: this.dashboardColors.lightgrey,
                lemon: this.dashboardColors.lemon,
            },

            custom: {
                dashboardLineChart: this.basic.defaultText,
                dashboardPieChart: colorHelper.hexToRgbA(this.basic.defaultText, 0.8)
            }
        }
    };

    get() {
        return this.conf;
    }

    changeTheme(theme) {
        _.merge(this.get().theme, theme);
    }

    changeColors(colors) {
        _.merge(this.get().colors, colors);
    }
}
